//package com.example.demomybatis.service.impl;
//
//import com.example.demomybatis.entity.Course;
//import com.example.demomybatis.mapper.CourseMapper;
//import com.example.demomybatis.service.CourseService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.data.redis.core.ValueOperations;
//import org.springframework.stereotype.Service;
//
//import java.util.List;
//
//
//@Service
//public class CourseServiceImpl_back implements CourseService {
//
//    @Autowired
//    CourseMapper courseMapper;
//
//    @Autowired
//    RedisTemplate redisTemplate;
//
//    private static final String KEY = "all_course";
//
//    @Override
//    public Integer addCourse(Course course) {
//        String key = "course_"+course.getCourseId();
//        Integer result = courseMapper.addCourse(course);
//        ValueOperations<String, Course> operations  =  redisTemplate.opsForValue();
//        if(result>0){
//            operations.set(key,course);
//            redisTemplate.delete(KEY);
//        }
//        return result;
//    }
//
//    @Override
//    public Integer updateCourse(Course course) {
//        //获取KEY值
//       String key = "course_"+course.getCourseId();
//       //更新数据
//       Integer result =  courseMapper.updateCourse(course);
//       //获取REDIS操作的包装对象
//       ValueOperations<String, Course> operations  =  redisTemplate.opsForValue();
//       if(result>0){
//           //如果存在就删除REDIS的老记录
//           if(redisTemplate.hasKey(key)){
//               redisTemplate.delete(key);
//               redisTemplate.delete(KEY);
//           }
//           //新增到REDIS
//           operations.set(key,course);
//           System.out.println("updateCourse: "+key);
//       }
//        return result;
//    }
//
//    @Override
//    public List<Course> selectCourse() {
//        ValueOperations<String, List<Course>> operations  =  redisTemplate.opsForValue();
//        if(redisTemplate.hasKey(KEY)){
//            List<Course> courseList =  operations.get(KEY);
//            System.out.println("selectCourse方法从REDIS获取数据: "+courseList.toString());
//            return courseList;
//        }
//        else{
//            List<Course> courseList =   courseMapper.selectCourse();
//            if(null!=courseList&&courseList.size()>0){
//                operations.set(KEY,courseList);
//            }
//            System.out.println("selectCourse方法从MYSQL获取数据: "+courseList.toString());
//            return courseList;
//        }
//
//    }
//
//    @Override
//    public Integer deleteCourse(Integer courseId) {
//        //获取KEY值
//        String key = "course_"+courseId;
//        //根据ID删除记录
//        Integer result =  courseMapper.deleteCourse(courseId);
//        if(result>0){//删除成功
//            //删除redis的缓存记录
//            if(redisTemplate.hasKey(key)){
//                redisTemplate.delete(key);
//                redisTemplate.delete(KEY);
//                System.out.println("deleteCourse: "+key);
//            }
//        }
//        return result;
//    }
//
//    @Override
//    public Course selectOneCourse(Integer courseId) {
//        //获取KEY值
//        String key = "course_"+courseId;
//        //获取REDIS操作的包装对象
//        ValueOperations<String, Course> operations  =  redisTemplate.opsForValue();
//        //如果存在
//        if(redisTemplate.hasKey(key)){
//            //获取REDIS的缓存对象
//            Course  course =   operations.get(key);
//            System.out.println("selectOneCourse方法从redis里面获取到数据: "+course.toString());
//            return course;
//        }else{
//            //数据库查找
//            Course  course =  courseMapper.selectOneCourse(courseId);
//            //插入到缓存REDIS
//            if(null!=course)
//                operations.set(key,course);
//            System.out.println("selectOneCourse方法从mysql里面获取到数据: "+course.toString());
//            return  course;
//        }
//    }
//}
